#ifndef PKTIO_H
#define PKTIO_H


#include <stdbool.h>
#include <sys/queue.h>
#include <el.h>
#include "ll.h"
#include "gw.h"

#define PKTIO_CONFIG_MAX 5

struct pktio {
  TAILQ_ENTRY(pktio) entry;

  int rxq;
  int txq;

  int id;
  int pool;

  char tap_name[MAX_NAME_LEN]; 
  el_handle_t handle;
  int fd;
  int mtu;

  char ifname[MAX_NAME_LEN];
  uint32_t addr;
  uint32_t mask;
  int use;
};

static inline bool valid_pktio_id(int id)
{
  return id >= 0 && id < PKTIO_CONFIG_MAX;
}

void llbuf_print(struct llbuf *ll);

struct pktio *get_pktio(int id);
bool pktio_send(int id, struct llbuf *ll);

void pktio_init(void);
void pktio_deinit(void);

#endif
